/**
 * @file
 * @description 对axios进行二次封装的请求文件
*/

import axios from "axios";
import {Message,MessageBox} from "element-ui"
import store from "store";

axios.defaults.timeout=process.env.VUE_APP_TIMEOUT;
axios.defaults.baseURL="/shi";


//http://tian.tianguixing.com:4001/api/private/v1
//http://9yuecloud.com:9988/api/private/v1
//http://shiyansong.cn:8888/api/private/v1
//http://timemeetyou.com:8889/api/private/v1/

// 开发过程中超时时间可以无限等待，或者60秒

/** 
 * 请求拦截器
*/
axios.interceptors.request.use(config=>{
    // TODD添加验证头
    config.headers.Authorization=store.getters.token;
    return config;
},error=>Promise.reject(error));

/**
 * 响应拦截器
 */
axios.interceptors.response.use(res=>{
    // TODD处理响应信息

  

//     const{
//        data,
//        meta:{
//          status,
//          msg
//        }
//     }=response.data;
//     if(status===200||status===201){
//         return data;
//     }
//     Message.error(msg);
//     return Promise.reject(msg);
// },error=>{
//     const errorMsg=error.toString();
//     if(errorMsg.includes("Metwork Error")){
//         return Message.error("请求失败，请检查您的网络是否正常");
//     }
//     if(errorMsg.includes("Timeout")){
//         return Message.error("请求超时，请稍后再试");
//     }
//     const {status }=error.response;
//     switch(status){
//         case 404:
//             Message.error("接口不存在");
//             break;
//         case 500:
//             Message.error("接口服务器请求失败，请稍后再试");
//             break;
//         case 401:
//             Message.error("身份校验失败，请重新登录");
//             // TODD加上跳转
//             break;
//         default:
//             Message.error("未知错误");
//             break;
//     }
//     return Promise.reject(error);

    //如何处理token过期问题？1.需要后台响应值告诉你，一般后台会自定义一个状态码40001,或者返回无效token,token过期等 2.提醒用户登录过期,返回登录页面
    console.log('响应数据',res);
    let code=res.data.meta.status
    let msg=res.data.meta.msg
    if(msg=="无效token"){
     MessageBox.confirm('token过期是否跳转登录页?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
           location.href="/login"
       }).catch(() => {
              
       })
    }
       
 
   //处理常见错误状态码 - 
   else if (code === 400|| code === 401 || code === 403|| code === 404|| code === 500) {
     Message.warning({
       duration:1000,
       message:msg
   })
  }
 
 
 
     // 对响应数据做点什么
     return res.data;
   }, error=>{
      //处理接口错误请求，响应错误-一般都是网络问题，进行处理
     // 对响应错误做点什么
 
     let {message}=error
     console.log(59,message); //解构出错误信息
 
     
     if (message == " Error") {
         message = "后端接口连接Network异常";
       }
   
       if(message.includes('timeout')){
         message = "系统接口请求超时";
       }
   
       Message.error({
         duration:1000,
         message:message
     })
 
 
      Promise.reject(error);
})

/**
 * 导出
 */
export default axios;